home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 60 / IOPROG_60.ISO / soft / c++ / gsl-1.1.1-setup.exe / {app} / src / cblas / test_herk.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-04-18  |  11.5 KB  |  396 lines

  1. #include <gsl/gsl_test.h>
  2. #include <gsl/gsl_ieee_utils.h>
  3. #include <gsl/gsl_math.h>
  4. #include <gsl/gsl_cblas.h>
  5.  
  6. #include "tests.h"
  7.  
  8. void
  9. test_herk (void) {
  10. const double flteps = 1e-4, dbleps = 1e-6;
  11.   {
  12.    int order = 101;
  13.    int uplo = 121;
  14.    int trans = 111;
  15.    int N = 2;
  16.    int K = 1;
  17.    float alpha = 1.0f;
  18.    float beta = 1.0f;
  19.    float A[] = { 0.934f, 0.664f, 0.426f, 0.263f };
  20.    int lda = 1;
  21.    float C[] = { 0.251f, -0.97f, 0.76f, -0.349f, 0.152f, -0.899f, -0.17f, 0.707f };
  22.    int ldc = 2;
  23.    float C_expected[] = { 1.56425f, 0.0f, 1.33252f, -0.311778f, 0.152f, -0.899f, 0.080645f, 0.0f };
  24.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  25.    {
  26.      int i;
  27.      for (i = 0; i < 4; i++) {
  28.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1606) real");
  29.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1606) imag");
  30.      };
  31.    };
  32.   };
  33.  
  34.  
  35.   {
  36.    int order = 102;
  37.    int uplo = 121;
  38.    int trans = 111;
  39.    int N = 2;
  40.    int K = 1;
  41.    float alpha = 1.0f;
  42.    float beta = 1.0f;
  43.    float A[] = { 0.16f, 0.464f, -0.623f, 0.776f };
  44.    int lda = 2;
  45.    float C[] = { 0.771f, -0.449f, 0.776f, 0.112f, -0.134f, 0.317f, 0.547f, -0.551f };
  46.    int ldc = 2;
  47.    float C_expected[] = { 1.0119f, 0.0f, 0.776f, 0.112f, 0.126384f, -0.096232f, 1.5373f, 0.0f };
  48.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  49.    {
  50.      int i;
  51.      for (i = 0; i < 4; i++) {
  52.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1607) real");
  53.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1607) imag");
  54.      };
  55.    };
  56.   };
  57.  
  58.  
  59.   {
  60.    int order = 101;
  61.    int uplo = 121;
  62.    int trans = 113;
  63.    int N = 2;
  64.    int K = 1;
  65.    float alpha = 0.1f;
  66.    float beta = 1.0f;
  67.    float A[] = { 0.787f, 0.057f, -0.49f, 0.47f };
  68.    int lda = 2;
  69.    float C[] = { -0.758f, 0.912f, 0.992f, -0.356f, 0.584f, 0.806f, 0.965f, 0.674f };
  70.    int ldc = 2;
  71.    float C_expected[] = { -0.695738f, 0.0f, 0.956116f, -0.316218f, 0.584f, 0.806f, 1.0111f, 0.0f };
  72.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  73.    {
  74.      int i;
  75.      for (i = 0; i < 4; i++) {
  76.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1608) real");
  77.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1608) imag");
  78.      };
  79.    };
  80.   };
  81.  
  82.  
  83.   {
  84.    int order = 102;
  85.    int uplo = 121;
  86.    int trans = 113;
  87.    int N = 2;
  88.    int K = 1;
  89.    float alpha = 0.1f;
  90.    float beta = 1.0f;
  91.    float A[] = { 0.961f, -0.384f, 0.165f, 0.395f };
  92.    int lda = 1;
  93.    float C[] = { -0.186f, 0.404f, -0.873f, 0.09f, -0.451f, -0.972f, -0.203f, -0.304f };
  94.    int ldc = 2;
  95.    float C_expected[] = { -0.0789023f, 0.0f, -0.873f, 0.09f, -0.450312f, -0.927704f, -0.184675f, 0.0f };
  96.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  97.    {
  98.      int i;
  99.      for (i = 0; i < 4; i++) {
  100.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1609) real");
  101.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1609) imag");
  102.      };
  103.    };
  104.   };
  105.  
  106.  
  107.   {
  108.    int order = 101;
  109.    int uplo = 122;
  110.    int trans = 111;
  111.    int N = 2;
  112.    int K = 1;
  113.    float alpha = 0.0f;
  114.    float beta = -0.3f;
  115.    float A[] = { 0.04f, 0.608f, 0.21f, -0.44f };
  116.    int lda = 1;
  117.    float C[] = { 0.285f, -0.943f, 0.581f, -0.56f, 0.112f, 0.529f, 0.16f, -0.913f };
  118.    int ldc = 2;
  119.    float C_expected[] = { -0.0855f, 0.0f, 0.581f, -0.56f, -0.0336f, -0.1587f, -0.048f, 0.0f };
  120.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  121.    {
  122.      int i;
  123.      for (i = 0; i < 4; i++) {
  124.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1610) real");
  125.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1610) imag");
  126.      };
  127.    };
  128.   };
  129.  
  130.  
  131.   {
  132.    int order = 102;
  133.    int uplo = 122;
  134.    int trans = 111;
  135.    int N = 2;
  136.    int K = 1;
  137.    float alpha = 0.0f;
  138.    float beta = -0.3f;
  139.    float A[] = { -0.984f, -0.398f, -0.379f, 0.919f };
  140.    int lda = 2;
  141.    float C[] = { -0.44f, -0.087f, 0.156f, -0.945f, -0.943f, -0.355f, 0.577f, 0.053f };
  142.    int ldc = 2;
  143.    float C_expected[] = { 0.132f, 0.0f, -0.0468f, 0.2835f, -0.943f, -0.355f, -0.1731f, 0.0f };
  144.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  145.    {
  146.      int i;
  147.      for (i = 0; i < 4; i++) {
  148.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1611) real");
  149.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1611) imag");
  150.      };
  151.    };
  152.   };
  153.  
  154.  
  155.   {
  156.    int order = 101;
  157.    int uplo = 122;
  158.    int trans = 113;
  159.    int N = 2;
  160.    int K = 1;
  161.    float alpha = 1.0f;
  162.    float beta = -1.0f;
  163.    float A[] = { 0.269f, -0.428f, -0.029f, 0.964f };
  164.    int lda = 2;
  165.    float C[] = { 0.473f, -0.932f, -0.689f, -0.072f, -0.952f, -0.862f, 0.001f, 0.282f };
  166.    int ldc = 2;
  167.    float C_expected[] = { -0.217455f, 0.0f, -0.689f, -0.072f, 0.531607f, 0.615096f, 0.929137f, 0.0f };
  168.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  169.    {
  170.      int i;
  171.      for (i = 0; i < 4; i++) {
  172.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1612) real");
  173.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1612) imag");
  174.      };
  175.    };
  176.   };
  177.  
  178.  
  179.   {
  180.    int order = 102;
  181.    int uplo = 122;
  182.    int trans = 113;
  183.    int N = 2;
  184.    int K = 1;
  185.    float alpha = 1.0f;
  186.    float beta = -1.0f;
  187.    float A[] = { -0.303f, -0.037f, -0.411f, -0.243f };
  188.    int lda = 1;
  189.    float C[] = { 0.652f, -0.227f, -0.849f, 0.87f, -0.051f, -0.535f, 0.418f, -0.681f };
  190.    int ldc = 2;
  191.    float C_expected[] = { -0.558822f, 0.0f, 0.982524f, -0.928422f, -0.051f, -0.535f, -0.19003f, 0.0f };
  192.    cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  193.    {
  194.      int i;
  195.      for (i = 0; i < 4; i++) {
  196.        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1613) real");
  197.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1613) imag");
  198.      };
  199.    };
  200.   };
  201.  
  202.  
  203.   {
  204.    int order = 101;
  205.    int uplo = 121;
  206.    int trans = 111;
  207.    int N = 2;
  208.    int K = 1;
  209.    double alpha = 0.1;
  210.    double beta = 1;
  211.    double A[] = { -0.384, -0.851, 0.518, 0.492 };
  212.    int lda = 1;
  213.    double C[] = { -0.117, -0.194, -0.915, 0.069, 0.445, 0.089, 0.213, -0.889 };
  214.    int ldc = 2;
  215.    double C_expected[] = { -0.0298343, 0.0, -0.9767604, 0.043811, 0.445, 0.089, 0.2640388, 0.0 };
  216.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  217.    {
  218.      int i;
  219.      for (i = 0; i < 4; i++) {
  220.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1614) real");
  221.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1614) imag");
  222.      };
  223.    };
  224.   };
  225.  
  226.  
  227.   {
  228.    int order = 102;
  229.    int uplo = 121;
  230.    int trans = 111;
  231.    int N = 2;
  232.    int K = 1;
  233.    double alpha = 0.1;
  234.    double beta = 1;
  235.    double A[] = { 0.13, 0.236, 0.788, 0.629 };
  236.    int lda = 2;
  237.    double C[] = { 0.021, -0.376, -0.804, 0.689, -0.912, 0.21, -0.581, 0.406 };
  238.    int ldc = 2;
  239.    double C_expected[] = { 0.0282596, 0.0, -0.804, 0.689, -0.8869116, 0.2204198, -0.4793415, 0.0 };
  240.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  241.    {
  242.      int i;
  243.      for (i = 0; i < 4; i++) {
  244.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1615) real");
  245.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1615) imag");
  246.      };
  247.    };
  248.   };
  249.  
  250.  
  251.   {
  252.    int order = 101;
  253.    int uplo = 121;
  254.    int trans = 113;
  255.    int N = 2;
  256.    int K = 1;
  257.    double alpha = 0;
  258.    double beta = 1;
  259.    double A[] = { 0.593, 0.846, -0.144, 0.128 };
  260.    int lda = 2;
  261.    double C[] = { 0.02, 0.313, 0.222, 0.301, 0.412, -0.645, -0.411, -0.02 };
  262.    int ldc = 2;
  263.    double C_expected[] = { 0.02, 0.313, 0.222, 0.301, 0.412, -0.645, -0.411, -0.02 };
  264.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  265.    {
  266.      int i;
  267.      for (i = 0; i < 4; i++) {
  268.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1616) real");
  269.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1616) imag");
  270.      };
  271.    };
  272.   };
  273.  
  274.  
  275.   {
  276.    int order = 102;
  277.    int uplo = 121;
  278.    int trans = 113;
  279.    int N = 2;
  280.    int K = 1;
  281.    double alpha = 0;
  282.    double beta = 1;
  283.    double A[] = { 0.857, 0.994, -0.933, 0.069 };
  284.    int lda = 1;
  285.    double C[] = { 0.253, -0.521, 0.937, -0.73, 0.24, 0.177, -0.27, -0.225 };
  286.    int ldc = 2;
  287.    double C_expected[] = { 0.253, -0.521, 0.937, -0.73, 0.24, 0.177, -0.27, -0.225 };
  288.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  289.    {
  290.      int i;
  291.      for (i = 0; i < 4; i++) {
  292.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1617) real");
  293.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1617) imag");
  294.      };
  295.    };
  296.   };
  297.  
  298.  
  299.   {
  300.    int order = 101;
  301.    int uplo = 122;
  302.    int trans = 111;
  303.    int N = 2;
  304.    int K = 1;
  305.    double alpha = 0;
  306.    double beta = 1;
  307.    double A[] = { -0.343, -0.433, -0.381, -0.087 };
  308.    int lda = 1;
  309.    double C[] = { -0.695, 0.911, 0.719, -0.074, -0.621, -0.256, 0.216, -0.889 };
  310.    int ldc = 2;
  311.    double C_expected[] = { -0.695, 0.911, 0.719, -0.074, -0.621, -0.256, 0.216, -0.889 };
  312.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  313.    {
  314.      int i;
  315.      for (i = 0; i < 4; i++) {
  316.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1618) real");
  317.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1618) imag");
  318.      };
  319.    };
  320.   };
  321.  
  322.  
  323.   {
  324.    int order = 102;
  325.    int uplo = 122;
  326.    int trans = 111;
  327.    int N = 2;
  328.    int K = 1;
  329.    double alpha = 0;
  330.    double beta = 1;
  331.    double A[] = { -0.887, 0.557, -0.43, 0.912 };
  332.    int lda = 2;
  333.    double C[] = { -0.083, 0.219, 0.417, 0.817, -0.294, -0.683, -0.633, 0.831 };
  334.    int ldc = 2;
  335.    double C_expected[] = { -0.083, 0.219, 0.417, 0.817, -0.294, -0.683, -0.633, 0.831 };
  336.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  337.    {
  338.      int i;
  339.      for (i = 0; i < 4; i++) {
  340.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1619) real");
  341.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1619) imag");
  342.      };
  343.    };
  344.   };
  345.  
  346.  
  347.   {
  348.    int order = 101;
  349.    int uplo = 122;
  350.    int trans = 113;
  351.    int N = 2;
  352.    int K = 1;
  353.    double alpha = -0.3;
  354.    double beta = -1;
  355.    double A[] = { -0.531, 0.187, -0.777, -0.329 };
  356.    int lda = 2;
  357.    double C[] = { -0.173, 0.833, 0.155, -0.52, -0.99, 0.28, 0.455, 0.481 };
  358.    int ldc = 2;
  359.    double C_expected[] = { 0.077921, 0.0, 0.155, -0.52, 0.8846808, -0.1840006, -0.668591, 0.0 };
  360.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  361.    {
  362.      int i;
  363.      for (i = 0; i < 4; i++) {
  364.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1620) real");
  365.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1620) imag");
  366.      };
  367.    };
  368.   };
  369.  
  370.  
  371.   {
  372.    int order = 102;
  373.    int uplo = 122;
  374.    int trans = 113;
  375.    int N = 2;
  376.    int K = 1;
  377.    double alpha = -0.3;
  378.    double beta = -1;
  379.    double A[] = { -0.287, 0.068, 0.917, -0.449 };
  380.    int lda = 1;
  381.    double C[] = { -0.248, -0.608, -0.124, -0.718, -0.037, -0.115, 0.998, -0.551 };
  382.    int ldc = 2;
  383.    double C_expected[] = { 0.2219021, 0.0, 0.2121133, 0.7379521, -0.037, -0.115, -1.310747, 0.0 };
  384.    cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc);
  385.    {
  386.      int i;
  387.      for (i = 0; i < 4; i++) {
  388.        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1621) real");
  389.        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1621) imag");
  390.      };
  391.    };
  392.   };
  393.  
  394.  
  395. }
  396.